<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>PySpice : Simulate Electronic Circuit using Python and the Ngspice / Xyce Simulators</title>
<style type="text/css">

/* Minimal style sheet for the HTML output of Docutils.                    */
/*                                                                         */
/* :Author: Günter Milde, based on html4css1.css by David Goodger          */
/* :Id: $Id: minimal.css 9079 2022-06-19 14:00:56Z milde $                                                               */
/* :Copyright: © 2015, 2021 Günter Milde.                                  */
/* :License: Released under the terms of the `2-Clause BSD license`_,      */
/*    in short:                                                            */
/*                                                                         */
/*    Copying and distribution of this file, with or without modification, */
/*    are permitted in any medium without royalty provided the copyright   */
/*    notice and this notice are preserved.                                */
/*                                                                         */
/*    This file is offered as-is, without any warranty.                    */
/*                                                                         */
/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause     */

/* This CSS3 stylesheet defines rules for Docutils elements without        */
/* HTML equivalent. It is required to make the document semantics visible. */
/*                                                                         */
/* .. _validates: http://jigsaw.w3.org/css-validator/validator$link        */

/* titles */
p.topic-title,
p.admonition-title,
p.system-message-title {
  font-weight: bold;
}
p.sidebar-title,
p.rubric {
  font-weight: bold;
  font-size: larger;
}
p.rubric {
  color: maroon;
}
p.subtitle,
p.section-subtitle,
p.sidebar-subtitle {
  font-weight: bold;
  margin-top: -0.5em;
}
h1 + p.subtitle {
  font-size: 1.6em;
}
a.toc-backref {
  color: inherit;
  text-decoration: none;
}

/* Warnings, Errors */
.system-messages h2,
.system-message-title,
span.problematic {
  color: red;
}

/* Inline Literals */
.docutils.literal {
  font-family: monospace;
  white-space: pre-wrap;
}
/* do not wrap at hyphens and similar: */
.literal > span.pre { white-space: nowrap; }

/* Lists */

/* compact and simple lists: no margin between items */
.simple  li, .simple  ul, .simple  ol,
.compact li, .compact ul, .compact ol,
.simple  > li p, dl.simple  > dd,
.compact > li p, dl.compact > dd {
  margin-top: 0;
  margin-bottom: 0;
}
/* Nested Paragraphs */
p:first-child { margin-top: 0; }
p:last-child { margin-bottom: 0; }
details > p:last-child { margin-bottom: 1em; }

/* Table of Contents */
.contents ul.auto-toc { /* section numbers present */
  list-style-type: none;
}

/* Enumerated Lists */
ol.arabic     { list-style: decimal }
ol.loweralpha { list-style: lower-alpha }
ol.upperalpha { list-style: upper-alpha }
ol.lowerroman { list-style: lower-roman }
ol.upperroman { list-style: upper-roman }

/* Definition Lists and Derivatives */
dt .classifier { font-style: italic }
dt .classifier:before {
  font-style: normal;
  margin: 0.5em;
  content: ":";
}
/* Field Lists and similar */
/* bold field name, content starts on the same line */
dl.field-list,
dl.option-list,
dl.docinfo {
  display: flow-root;
}
dl.field-list > dt,
dl.option-list > dt,
dl.docinfo > dt {
  font-weight: bold;
  clear: left;
  float: left;
  margin: 0;
  padding: 0;
  padding-right: 0.2em;
}
/* Offset for field content (corresponds to the --field-name-limit option) */
dl.field-list > dd,
dl.option-list > dd,
dl.docinfo > dd {
  margin-left:  9em; /* ca. 14 chars in the test examples, fit all Docinfo fields */
}
/* start nested lists on new line */
dd > dl:first-child,
dd > ul:first-child,
dd > ol:first-child {
  clear: left;
}
/* start field-body on a new line after long field names */
dl.field-list > dd > *:first-child,
dl.option-list > dd > *:first-child
{
  display: inline-block;
  width: 100%;
  margin: 0;
}

/* Bibliographic Fields (docinfo) */
dl.docinfo pre.address {
  font: inherit;
  margin: 0.5em 0;
}
dl.docinfo > dd.authors > p { margin: 0; }

/* Option Lists */
dl.option-list > dt { font-weight: normal; }
span.option { white-space: nowrap; }

/* Footnotes and Citations  */

.footnote, .citation { margin: 1em 0; } /* default paragraph skip (Firefox) */
/* hanging indent */
.citation { padding-left: 2em; }
.footnote { padding-left: 1.7em; }
.footnote.superscript { padding-left: 1.0em; }
.citation > .label { margin-left: -2em; }
.footnote > .label { margin-left: -1.7em; }
.footnote.superscript > .label { margin-left: -1.0em; }

.footnote > .label + *,
.citation > .label + * {
  display: inline-block;
  margin-top: 0;
  vertical-align: top;
}
.footnote > .backrefs + *,
.citation > .backrefs + * {
  margin-top: 0;
}
.footnote > .label + p, .footnote > .backrefs + p,
.citation > .label + p, .citation > .backrefs + p {
  display: inline;
  vertical-align: inherit;
}

.backrefs { user-select: none; }
.backrefs > a { font-style: italic; }

/* superscript footnotes */
a[role="doc-noteref"].superscript,
.footnote.superscript > .label,
.footnote.superscript > .backrefs {
  vertical-align: super;
  font-size: smaller;
  line-height: 1;
}
a[role="doc-noteref"].superscript > .fn-bracket,
.footnote.superscript > .label > .fn-bracket {
  /* hide brackets in display but leave for copy/paste */
  display: inline-block;
  width: 0;
  overflow: hidden;
}
[role="doc-noteref"].superscript + [role="doc-noteref"].superscript {
  padding-left: 0.15em; /* separate consecutive footnote references */
  /* TODO: unfortunately, "+" also selects with text between the references. */
}

/* Alignment */
.align-left   {
  text-align: left;
  margin-right: auto;
}
.align-center {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}
.align-right  {
  text-align: right;
  margin-left: auto;
}
.align-top    { vertical-align: top; }
.align-middle { vertical-align: middle; }
.align-bottom { vertical-align: bottom; }

/* reset inner alignment in figures and tables */
figure.align-left, figure.align-right,
table.align-left, table.align-center, table.align-right {
  text-align: inherit;
}

/* Text Blocks */
.topic { margin: 1em 2em; }
.sidebar,
.admonition,
.system-message {
  margin: 1em 2em;
  border: thin solid;
  padding: 0.5em 1em;
}
div.line-block { display: block; }
div.line-block div.line-block, pre { margin-left: 2em; }

/* Code line numbers: dropped when copying text from the page */
pre.code .ln { display: none; }
pre.code code:before {
  content: attr(data-lineno); /* …, none) fallback not supported by any browser */
  color: gray;
}

/* Tables */
table {
  border-collapse: collapse;
}
td, th {
  border: thin solid silver;
  padding: 0 1ex;
}
.borderless td, .borderless th {
  border: 0;
  padding: 0;
  padding-right: 0.5em /* separate table cells */
}

table > caption {
  text-align: left;
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
table.captionbelow {
  caption-side: bottom;
}

/* Document Header and Footer */
header { border-bottom: 1px solid black; }
footer { border-top: 1px solid black; }

/* Images are block-level by default in Docutils */
/* New HTML5 block elements: set display for older browsers */
img, header, footer, main, aside, nav, section, figure, video, details {
  display: block;
}
/* inline images */
p img, p video, figure img, figure video {
  display: inline;
}

</style>
<style type="text/css">

/* CSS31_ style sheet for the output of Docutils HTML writers.             */
/* Rules for easy reading and pre-defined style variants.                  */
/*                                                                         */
/* :Author: Günter Milde, based on html4css1.css by David Goodger          */
/* :Id: $Id: plain.css 9338 2023-04-08 21:08:47Z milde $                                                               */
/* :Copyright: © 2015 Günter Milde.                                        */
/* :License: Released under the terms of the `2-Clause BSD license`_,      */
/*    in short:                                                            */
/*                                                                         */
/*    Copying and distribution of this file, with or without modification, */
/*    are permitted in any medium without royalty provided the copyright   */
/*    notice and this notice are preserved.                                */
/*                                                                         */
/*    This file is offered as-is, without any warranty.                    */
/*                                                                         */
/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause     */
/* .. _CSS3: https://www.w3.org/Style/CSS/                                 */


/* Document Structure */
/* ****************** */

/* "page layout" */
body {
  margin: 0;
  background-color: #dbdbdb;
  --field-indent: 9em; /* default indent of fields in field lists */
}
main, footer, header {
  line-height:1.6;
  /* avoid long lines --> better reading */
  /* optimum is 45…75 characters/line <http://webtypography.net/2.1.2> */
  /* OTOH: lines should not be too short because of missing hyphenation, */
  max-width: 50rem;
  padding: 1px 2%; /* 1px on top avoids grey bar above title (mozilla) */
  margin: auto;
}
main {
  counter-reset: table figure;
  background-color: white;
}
footer, header {
  font-size: smaller;
  padding: 0.5em 2%;
  border: none;
}

/* Table of Contents */
ul.auto-toc > li > p {
  padding-left: 1em;
  text-indent: -1em;
}
nav.contents ul {
  padding-left: 1em;
}
main > nav.contents ul ul ul ul:not(.auto-toc) {
  list-style-type: '\2B29\ ';
}
main > nav.contents ul ul ul ul ul:not(.auto-toc) {
  list-style-type: '\2B1D\ ';
}

/* Transitions */
hr.docutils {
  width: 80%;
  margin-top: 1em;
  margin-bottom: 1em;
  clear: both;
}

/* Paragraphs */

/* vertical space (parskip) */
p, ol, ul, dl, li,
div.line-block,
.footnote, .citation,
div > math,
table {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

h1, h2, h3, h4, h5, h6,
dd, details > p:last-child {
  margin-bottom: 0.5em;
}

/* Lists */
/* ===== */

/* Definition Lists */
/* Indent lists nested in definition lists */
dd > ul:only-child, dd > ol:only-child { padding-left: 1em; }

/* Description Lists */
/* styled like in most dictionaries, encyclopedias etc. */
dl.description {
  display: flow-root;
}
dl.description > dt {
  font-weight: bold;
  clear: left;
  float: left;
  margin: 0;
  padding: 0;
  padding-right: 0.3em;
}
dl.description > dd:after {
  display: table;
  content: "";
  clear: left; /* clearfix for empty descriptions */
}

/* Field Lists */

dl.field-list > dd,
dl.docinfo > dd {
  margin-left: var(--field-indent); /* adapted in media queries or HTML */
}

/* example for custom field-name width */
dl.field-list.narrow > dd {
  --field-indent: 5em;
}
/* run-in: start field-body on same line after long field names */
dl.field-list.run-in > dd p {
  display: block;
}

/* Bibliographic Fields */

/* generally, bibliographic fields use dl.docinfo */
/* but dedication and abstract are placed into divs */
div.abstract p.topic-title {
  text-align: center;
}
div.dedication {
  margin: 2em 5em;
  text-align: center;
  font-style: italic;
}
div.dedication p.topic-title {
  font-style: normal;
}

/* disclosures */
details { padding-left: 1em; }
summary { margin-left: -1em; }

/* Text Blocks */
/* =========== */

/* Literal Blocks */
pre.literal-block, pre.doctest-block,
pre.math, pre.code {
  font-family: monospace;
}

/* Block Quotes and Topics */
bockquote { margin: 1em 2em; }
blockquote p.attribution,
.topic p.attribution {
  text-align: right;
  margin-left: 20%;
}

/* Tables */
/* ====== */

/* th { vertical-align: bottom; } */

table tr { text-align: left; }

/* "booktabs" style (no vertical lines) */
table.booktabs {
  border: 0;
  border-top: 2px solid;
  border-bottom: 2px solid;
  border-collapse: collapse;
}
table.booktabs * {
  border: 0;
}
table.booktabs th {
  border-bottom: thin solid;
}

/* numbered tables (counter defined in div.document) */
table.numbered > caption:before {
  counter-increment: table;
  content: "Table " counter(table) ": ";
  font-weight: bold;
}

/* Explicit Markup Blocks */
/* ====================== */

/* Footnotes and Citations */
/* ----------------------- */

/* line on the left */
.footnote-list {
  border-left: solid thin;
  padding-left: 0.25em;
}

/* Directives */
/* ---------- */

/* Body Elements */
/* ~~~~~~~~~~~~~ */

/* Images and Figures */

/* let content flow to the side of aligned images and figures */
figure.align-left,
img.align-left,
video.align-left,
object.align-left {
  clear: left;
  float: left;
  margin-right: 1em;
}
figure.align-right,
img.align-right,
video.align-right,
object.align-right {
  clear: right;
  float: right;
  margin-left: 1em;
}
/* Stop floating sidebars, images and figures */
h1, h2, h3, h4, footer, header { clear: both; }

/* Numbered figures */
figure.numbered > figcaption > p:before {
  counter-increment: figure;
  content: "Figure " counter(figure) ": ";
  font-weight: bold;
}

/* Admonitions and System Messages */
.caution p.admonition-title,
.attention p.admonition-title,
.danger p.admonition-title,
.error p.admonition-title,
.warning p.admonition-title,
div.error {
  color: red;
}

/* Sidebar */
/* Move right. In a layout with fixed margins, */
/* it can be moved into the margin.            */
aside.sidebar {
  width: 30%;
  max-width: 26em;
  float: right;
  clear: right;
  margin-left: 1em;
  margin-right: -1%;
  background-color: #fffffa;
}


/* Code */
pre.code { padding: 0.7ex }
pre.code, code { background-color: #eeeeee }
/* basic highlighting: for a complete scheme, see */
/* https://docutils.sourceforge.io/sandbox/stylesheets/ */
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}

/* Math */
/* for math-output=MathML (for math-output=HTML, see math.css) */
math .boldsymbol {
  font-weight: bold;
}
mstyle.mathscr, mi.mathscr {
  font-family: STIX, XITSMathJax_Script, rsfs10,
               "Asana Math", Garamond, cursive;
}

/* Epigraph           */
/* Highlights         */
/* Pull-Quote         */
/* Compound Paragraph */
/* Container          */

/* Inline Markup */
/* ============= */

sup, sub { line-height: 0.8; } /* do not add leading for lines with sup/sub */

/* Inline Literals                                          */
/* possible values: normal, nowrap, pre, pre-wrap, pre-line */
/*   span.docutils.literal { white-space: pre-wrap; }       */

/* Hyperlink References */
a { text-decoration: none; }

/* External Targets       */
/*   span.target.external */
/* Internal Targets       */
/*   span.target.internal */
/* Footnote References    */
/*   a[role="doc-noteref"] */
/* Citation References    */
/*   a.citation-reference */

</style>
</head>
<body>
<main id="pyspice-simulate-electronic-circuit-using-python-and-the-ngspice-xyce-simulators">
<h1 class="title">PySpice : Simulate Electronic Circuit using Python and the Ngspice / Xyce Simulators</h1>

<!-- -*- Mode: rst -*- -->
<!-- -*- Mode: rst -*- -->
<!-- -*- Mode: rst -*- -->
<p><a class="reference external image-reference" href="https://pypi.python.org/pypi/PySpice"><img alt="PySpice license" src="https://img.shields.io/pypi/l/PySpice.svg" /></a>
<a class="reference external image-reference" href="https://pypi.python.org/pypi/PySpice"><img alt="PySpice python version" src="https://img.shields.io/pypi/pyversions/PySpice.svg" /></a></p>
<p><a class="reference external image-reference" href="https://pypi.python.org/pypi/PySpice"><img alt="PySpice last version" src="https://img.shields.io/pypi/v/PySpice.svg" /></a></p>
<p><a class="reference external image-reference" href="https://anaconda.org/conda-forge/pyspice/badges/version.svg"><img alt="Anaconda last version" src="https://anaconda.org/conda-forge/pyspice/badges/version.svg" /></a>
<a class="reference external image-reference" href="https://anaconda.org/conda-forge/pyspice/badges/downloads.svg"><img alt="Anaconda donwloads" src="https://anaconda.org/conda-forge/pyspice/badges/downloads.svg" /></a></p>
<p><a class="reference external image-reference" href="https://travis-ci.com/FabriceSalvaire/PySpice"><img alt="PySpice build status &#64;travis-ci.org" src="https://travis-ci.com/FabriceSalvaire/PySpice.svg?branch=master" /></a></p>
<p><strong>Quick Links</strong></p>
<ul class="simple">
<li><p><a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/tree/master">Production Branch</a></p></li>
<li><p><a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/tree/devel">Devel Branch</a></p></li>
<li><p><a class="reference external" href="https://travis-ci.com/github/FabriceSalvaire/PySpice">Travis CI</a></p></li>
<li><p><a class="reference external" href="https://github.com/conda-forge/pyspice-feedstock">pyspice&#64;conda-forge</a></p></li>
<li><p><a class="reference external" href="https://anaconda.org/conda-forge/pyspice">conda-forge/pyspice</a></p></li>
<li><p><a class="reference external" href="https://github.com/conda-forge/ngspice-feedstock">ngspice&#64;conda-forge</a></p></li>
<li><p><a class="reference external" href="http://ngspice.sourceforge.net">Ngspice</a></p></li>
<li><p><a class="reference external" href="https://sourceforge.net/p/ngspice/bugs">Ngspice Bug Tracker</a></p></li>
<li><p><a class="reference external" href="https://xyce.sandia.gov">Xyce of Sandia National Laboratories</a></p></li>
</ul>
<section id="update">
<h2>2024 Update</h2>
<p><strong>Disclaimer: PySpice is developed on my free time actually, so I could be busy with other tasks and less reactive.</strong></p>
<p>The free Discourse forum was closed some time ago due to a lack of activity.
A HTML backup is stored in the directory <cite>pyspice-discourse-backup</cite>.</p>
<p><strong>On Devel HEAD</strong></p>
<ul class="simple">
<li><p>fixed the ngspice library loading for recent cffi</p></li>
<li><p>fixed simulation aborting due to a message from newer ngspice</p></li>
<li><p>fixes for Spice parser</p></li>
<li><p>added support for Pint unit library</p></li>
<li><p>implemented SpiceLibrary</p></li>
<li><p>code cleanup but must check for typo...</p></li>
</ul>
<!-- Brief Notes
=========== -->
<p>An issue was found with NgSpice Shared, we must <cite>setlocale(LC_NUMERIC, &quot;C&quot;);</cite> see <a class="reference external" href="https://sourceforge.net/p/ngspice/bugs/490/">https://sourceforge.net/p/ngspice/bugs/490/</a></p>
</section>
<section id="overview">
<h2>Overview</h2>
<section id="what-is-pyspice">
<h3>What is PySpice ?</h3>
<p>PySpice is a Python module which interface <a class="reference external" href="http://python.org">Python</a> to the <a class="reference external" href="http://ngspice.sourceforge.net">Ngspice</a> and <a class="reference external" href="https://xyce.sandia.gov">Xyce</a> circuit simulators.</p>
</section>
<section id="where-is-the-documentation">
<h3>Where is the Documentation ?</h3>
<p>The documentation is available on the <a class="reference external" href="https://pyspice.fabrice-salvaire.fr">PySpice Home Page</a>.</p>
<p><em>Note: This site is hosted on my own infrastructure, if the site seems done, please create an issue to notify me.</em></p>
</section>
<section id="where-to-get-help-or-talk-about-pyspice">
<h3>Where to get help or talk about PySpice ?</h3>
<p>Thanks to <a class="reference external" href="https://www.discourse.org">Discourse</a>, PySpice now has a <strong>Forum</strong> hosted at <a class="reference external" href="https://pyspice.discourse.group">https://pyspice.discourse.group</a></p>
</section>
<section id="what-are-the-main-features">
<h3>What are the main features ?</h3>
<ul class="simple">
<li><p>support Ngspice and Xyce circuit simulators</p></li>
<li><p>support <strong>Linux</strong>, <strong>Windows</strong> and Mac <strong>OS X</strong> platforms</p></li>
<li><p>licensed under <strong>GPLv3</strong> therms</p></li>
<li><p>implement an <strong>Ngspice shared library binding</strong> using CFFI which support external sources</p></li>
<li><p>implement (partial) <strong>SPICE netlist parser</strong></p></li>
<li><p>implement an <strong>Oriented Object API</strong> to define circuit</p></li>
<li><p>export simulation output to <a class="reference external" href="http://www.numpy.org">Numpy</a> arrays</p></li>
<li><p>plot using <a class="reference external" href="http://matplotlib.org">Matplotlib</a></p></li>
<li><p>handle <strong>units</strong></p></li>
<li><p>work with <strong>Kicad schematic editor</strong></p></li>
<li><p>implement a <strong>documentation generator</strong></p></li>
<li><p>provides many <strong>examples</strong></p></li>
</ul>
</section>
<section id="how-to-install-it">
<h3>How to install it ?</h3>
<p>Look at the <a class="reference external" href="https://pyspice.fabrice-salvaire.fr/releases/latest/installation.html">installation</a> section in the documentation.</p>
</section>
</section>
<section id="pull-request-recommendation">
<h2>Pull Request Recommendation</h2>
<p>To make it easier to merge your pull request, you should divide your PR into smaller and easier-to-verify units.</p>
<p>Please do not make a pull requests with a lot of modifications which are difficult to check.  <strong>If I merge
pull requests blindly then there is a high risk this software will become a mess quickly for everybody.</strong></p>
</section>
<section id="credits">
<h2>Credits</h2>
<p>Authors: <a class="reference external" href="http://fabrice-salvaire.fr">Fabrice Salvaire</a> and <a class="reference external" href="https://github.com/FabriceSalvaire/PySpice/blob/master/CONTRIBUTORS.md">contributors</a></p>
</section>
<section id="news">
<h2>News</h2>
<!-- -*- Mode: rst -*- -->
<!-- no title here -->
<section id="v1-6-0-development-release">
<h3>V1.6.0 (development release)</h3>
<ul class="simple">
<li><p><strong>KiCadTools</strong> a proof of concept module to read KiCad 6
<cite>.kicad_sch</cite> schema file and compute the netlist.  <em>This module can
be used to perform any kind of processings on a KiCad schema.  It is
actually hosted in the source but could become a standalone
project.</em> For PySpice, it provides a very flexible way to draft a
circuit with the help of KiCad and then generate the netlist without
using the netlist export feature of KiCad.  And thus leverage the
writing of fastidious cicruit.</p></li>
</ul>
</section>
<section id="v1-5-0-production-release-2021-05-15">
<h3>V1.5.0 (production release) 2021-05-15</h3>
<ul class="simple">
<li><p>Support Ngspice up to version 34</p></li>
<li><p>Renamed custom dunders &quot;__dunder__&quot; to &quot;CONSTANT&quot; or &quot;_private&quot; class attributes</p></li>
<li><p>Fixed typo in documentation (thanks to endolith and brollb)</p></li>
<li><p>Add DC temperature sweep support #272 (thanks to Fatsie)</p></li>
<li><p>PWL support improvements #271 (thanks to Fatsie)</p></li>
<li><p>Assign units on creation of temperature-sweep vectors #263 (thanks to ARF1)</p></li>
<li><p>Prevent memory leaks by freeing ngspice command log #260  thanks to ARF1)</p></li>
<li><p>Performance optimization: dispatch multiple alter commands jointly #259 (thanks to ARF1)</p></li>
<li><p>Added spice library support #258  (thanks to Fatsie)</p></li>
<li><p>Allow to specify DC value for PWL #257 (thanks to Fatsie)</p></li>
<li><p>Support for <cite>.nodeset</cite> type initial condition #256 (thanks to Fatsie)</p></li>
<li><p>Fix accuracy problems #254 (thanks to sotw1957)</p></li>
<li><p>Changes to make it easier to use PySpice with a large archive of SPICE models medium diff #249 (thanks to xesscorp)</p></li>
<li><p><cite>Netlist.py</cite>: Fix wrong method when joining parameters during netlist parse #245 (thanks to cyber-g)</p></li>
<li><p>Unit: add Pickle support</p></li>
<li><p>Add Parser code from #136 (thanks to jmgc) but not yet merged</p></li>
<li><p>Unit: add np.mean</p></li>
</ul>
</section>
<section id="v1-4-3-2020-07-04">
<h3>V1.4.3 2020-07-04</h3>
<p>A huge effort, thanks to &#64;stuarteberg Stuart Berg, has been made to make Ngspice and PySpice
available on Anaconda (conda-forge) for the Window, OSX and Linux platforms.  Thanks to the
conda-forge continuous integration platform, we can now run unit tests and the examples on theses
platforms automatically.  Hope this will make the software more robust and easier to run !</p>
<ul class="simple">
<li><p>PySpice is now available on Anaconda(conda-forge) as well as a wheel on PyPI</p></li>
<li><p>Added a post installation tool to download the Ngspice DLL on Windows and to check the installation.
It should now simplify considerably the PySpice installation on Windows.</p></li>
<li><p>This tool can also download the examples and the Ngspice PDF manual.</p></li>
<li><p>On Linux and OSX, a Ngspice package is now available on Anaconda(conda-forge).
Note that theses two platforms do not download a binary from Ngspice since a compiler can easily be installed on theses platforms.</p></li>
<li><p>Updated installation documentation for Linux, the main distributions now provide a ngspice shared package.</p></li>
<li><p>Added a front-end web site so as to keep older releases documentation available on the web.</p></li>
<li><p>fixed and rebuilt all examples (but mistakes could happen ...)</p></li>
<li><p>examples are now available as Python files and Jupyter notebooks
(but some issues must be fixed, e.g. due to the way Jupyter handles Matplotlib plots)</p></li>
<li><p>support NgSpice 32 API (no change)</p></li>
<li><p>removed &#64;substitution&#64; in PySpice/__init__.py, beacause it breaks pip install from git</p></li>
<li><p>fixed some logging spams</p></li>
<li><p>fixed NonLinearVoltageSource</p></li>
<li><p>fixed Unicode issue with °C (° is Extended ASCII)</p></li>
<li><p>fixed ffi_string_utf8 for UnicodeDecodeError</p></li>
<li><p>fixed logging formater for OSX (removed ANSI codes)</p></li>
<li><p>reworded &quot;Invalid plot name&quot; exception</p></li>
<li><p>removed diacritics in example filenames</p></li>
<li><p>cir2py has been converted to an entry point so as to work on all platforms</p></li>
<li><p>updated Matplotlib subplots in examples</p></li>
<li><p>added a unit example</p></li>
<li><p>added a NMOS example (thanks to cyber-g) cf. #221</p></li>
</ul>
</section>
<section id="v1-4-0-2020-05-05">
<h3>V1.4.0 2020-05-05</h3>
<p>This release is yanked due to broken Windows support.</p>
<ul class="simple">
<li><p>fixed nasty issue with NgSpice shared for <cite>setlocale(LC_NUMERIC, &quot;C&quot;);</cite> cf. #172</p></li>
<li><p>fixed <cite>AC AC_MAG AC_PASAE SIN</cite> for new NgSpice syntax</p></li>
<li><p>fixed <cite>initial_state</cite> for <cite>VoltageControlledSwitch</cite></p></li>
<li><p>fixed <cite>LosslessTransmissionLine</cite> #169</p></li>
<li><p>fixed docstrings for element shortcut methods (thanks to Kyle Dunn) #178</p></li>
<li><p>fixed parser for leading whitespace (thanks to Matt Huszagh) #182</p></li>
<li><p>fix for PyYAML newer API</p></li>
<li><p>support NgSpice 31 API (no change)</p></li>
<li><p>added check for <cite>CoupledInductor</cite> #157</p></li>
<li><p>added <cite>check-installation</cite> tool to help to fix broken installation</p></li>
<li><p>added pole-zero, noise, distorsion, transfer-function analyses (thanks to Peter Garrone) #191</p></li>
<li><p>added <cite>.measure</cite> support (thanks to ceprio) #160</p></li>
<li><p>added <cite>log_desk</cite> parameter to <cite>CircuitSimulator</cite></p></li>
<li><p>added <cite>listing</cite> command method to <cite>NgSpiceShared</cite></p></li>
<li><p>added Xyce Mosfet nfin #177</p></li>
</ul>
</section>
<section id="v1-3-2-2019-03-11">
<h3>V1.3.2  2019-03-11</h3>
<ul class="simple">
<li><p>support Ngspice 30 and Xyce 6.10</p></li>
<li><p>fixed NgSpice and Xyce support on Windows 10</p></li>
<li><p>bug fixes</p></li>
</ul>
</section>
<section id="v1-2-0-2018-06-07">
<h3>V1.2.0 2018-06-07</h3>
<ul class="simple">
<li><p>Initial support of the <a class="reference external" href="https://xyce.sandia.gov">Xyce</a> simulator.  Xyce is an open source, SPICE-compatible,
high-performance analog circuit simulator, capable of solving extremely large circuit problems
developed at Sandia National Laboratories.  Xyce will make PySpice suitable for industry and
research use.</p></li>
<li><p>Fixed OSX support</p></li>
<li><p>Splitted G device</p></li>
<li><p>Implemented partially <cite>A</cite> XSPICE device</p></li>
<li><p>Implemented missing transmission line devices</p></li>
<li><p>Implemented high level current sources
<strong>Notice: Some classes were renamed !</strong></p></li>
<li><p>Implemented node kwarg e.g. <code>circuit.Q(1, base=1, collector=2, emitter=3, model='npn')</code></p></li>
<li><p>Implemented raw spice pass through (see <a class="reference external" href="/faq.html">User FAQ</a>)</p></li>
<li><p>Implemented access to internal parameters (cf. <code>save &#64;device[parameter]</code>)</p></li>
<li><p>Implemented check for missing ground node</p></li>
<li><p>Implemented a way to disable an element and clone netlist</p></li>
<li><p>Improved SPICE parser</p></li>
<li><p>Improved unit support:</p>
<ul>
<li><p>Implemented unit prefix cast <cite>U_μV(U_mV(1))</cite> to easily convert values</p></li>
<li><p>Added <cite>U_mV</cite>, ... shortcuts</p></li>
<li><p>Added Numpy array support to unit, see <cite>UnitValues</cite> <strong>Notice: this new feature could be buggy !!!</strong></p></li>
<li><p>Rebased <cite>WaveForm</cite> to <cite>UnitValues</cite></p></li>
</ul>
</li>
<li><p>Fixed node order so as to not confuse users <strong>Now PySpice matches SPICE order for two ports elements !</strong></p></li>
<li><p>Fixed device shortcuts in <cite>Netlist</cite> class</p></li>
<li><p>Fixed model kwarg for BJT <strong>Notice: it must be passed exclusively as kwarg !</strong></p></li>
<li><p>Fixed subcircuit nesting</p></li>
<li><p>Outsourced documentation generator to <a class="reference external" href="https://github.com/FabriceSalvaire/Pyterate">Pyterate</a></p></li>
<li><p>Updated <cite>setup.py</cite> for wheel</p></li>
</ul>
<!-- :ref:`user-faq-page` -->
</section>
<section id="v1-1-0-2017-09-06">
<h3>V1.1.0 2017-09-06</h3>
<ul class="simple">
<li><p>Enhanced shared mode</p></li>
<li><p>Shared mode is now set as default on Linux</p></li>
</ul>
</section>
<section id="v1-0-0-2017-09-06">
<h3>V1.0.0 2017-09-06</h3>
<ul class="simple">
<li><p>Bump version to v1.0.0 since it just works!</p></li>
<li><p>Support Windows platform using Ngspice shared mode</p></li>
<li><p>Fixed shared mode</p></li>
<li><p>Fixed and completed Spice parser : tested on example's libraries</p></li>
</ul>
</section>
<section id="v0-4-2">
<h3>V0.4.2</h3>
<ul class="simple">
<li><p>Fixed Spice parser for lower case device prefix.</p></li>
</ul>
</section>
<section id="v0-4-0-2017-07-31">
<h3>V0.4.0 2017-07-31</h3>
<ul class="simple">
<li><p>Git repository cleanup: filtered generated doc and useless files so as to shrink the repository size.</p></li>
<li><p>Improved documentation generator: Implemented <code>format</code> for RST content and Tikz figure.</p></li>
<li><p>Improved unit support: It implements now the International System of Units.
And we can now use unit helper like <code>u_mV</code> or compute the value of <code>1.2&#64;u_kΩ / 2&#64;u_mA</code>.
The relevant documentation is on this <a class="reference external" href="api/PySpice/Unit.html">page</a>.</p></li>
<li><p>Added the Simulation instance to the Analysis class.</p></li>
<li><p>Refactored simulation parameters as classes.</p></li>
</ul>
</section>
<section id="v0-3-2-2017-02-22">
<h3>V0.3.2 2017-02-22</h3>
<ul class="simple">
<li><p>fixed CCCS and CCVS</p></li>
</ul>
</section>
<section id="v0-3-1-2017-02-22">
<h3>V0.3.1 2017-02-22</h3>
<ul class="simple">
<li><p>fixed ngspice shared</p></li>
</ul>
</section>
<section id="v0-3-0-2015-12-08">
<h3>V0.3.0 2015-12-08</h3>
<ul class="simple">
<li><p>Added an example to show how to use the NgSpice Shared Simulation Mode.</p></li>
<li><p>Completed the Spice netlist parser and added examples, we could now use a schematic editor
to define the circuit.  The program <em>cir2py</em> translates a circuit file to Python.</p></li>
</ul>
</section>
<section id="v0-2014-03-21">
<h3>V0 2014-03-21</h3>
<p>Started project</p>
<!-- End -->
<!-- End -->
</section>
</section>
</main>
</body>
</html>
